上一篇我們介紹了RAG和LLM,它們是讓聊天機器人活起來說人話的重要關鍵。但在背後,其實還有功不可沒的向量化技術作為支撐,今天就來跟大家解釋Embedding和向量資料庫,以及它們到底在背後幫了什麼忙。
在Azure的官網上是這麼定義向量資料庫的:
向量資料庫是用來儲存及管理向量內嵌的資料庫,這是高維度空間中資料的數學表示法。 在此空間中,每個維度各對應至資料的一個特徵,且有數萬個維度可用來代表複雜的資料。 向量在此空間中的位置代表其特性。 單字、片語或整份文件、影像、音訊和其他類型的資料,全都可以向量化。 這些向量內嵌會用於相似度搜尋、多重模式搜尋、建議引擎、大型語言模型 (LLM) 等。
在向量資料庫中,內嵌會根據其向量距離或相似度,透過向量搜尋演算法進行索引編製和查詢。 必須有強固的機制,才能識別最相關的資料。
如果這段話還沒能讓你在腦中馬上浮現出具體的畫面,回想Part1: Azure聊天機器人原理-查找資料(2)的文章中,我們提到文檔中擷取出的文字,還需要經過向量化的步驟才存進向量資料庫中供後續搜尋。這個存放向量數據的地方,就是我們的向量資料庫,而每一組向量,不只代表一個座標位置,它們都各自代表不同的意義。
Embedding直翻中文是嵌入,在這裡的意思是,無論原本是任何形式,我們把萬物都化為一組由數個數字組成的向量,嵌入到座標系統之中。在這個座標系統中,大家都成為了渺小的一個點座標,彼此的左右鄰居,會是在原本的意義上較為接近的近似物。舉例來說,當我們要搜尋獅子時,如果以關鍵字搜尋,可能近似的字詞會是獅子座、獅子頭。但當我們在搜尋獅子時,可能是想要探索動物世界,這種情境下,斑馬可能會是相對近似,但又在字面上看不出來相同處的對象。此時,Embedding就能帶來很多好處,因為在Embedding後的世界中,獅子和斑馬都是動物,可能會是座標中的鄰居,而獅子頭可能會和同為肉類料理的東坡肉在另一個區域裡成為鄰居,以此類推,機器人的大腦若透過Embedding來看世界,也能更加靈活地運用這些知識,提供使用者更準確的搜尋結果。
下一篇開始,我們要回到原本的Azure聊天機器人架構圖,講完了上半部的查找資料,要繼續和大家分享下半部的聊天應答。
Adobe Firefly(AI圖片生成)
Azure向量資料庫定義
TGIF!不知道大家的公司有沒有周五文化,這一天,可能不會安排密集的會議,時間上會以工作收尾、統整該周進度以及跟同事們交流為主。無論有沒有,都感謝這一周認真的自己,準備迎接周末假期!